package com.rcklos.NettyLentMe.netty.interfaces;

import io.netty.channel.Channel;

/**
 * @// TODO: 2020/10/5 ChannelPool的接口
 * @author 20152 
 * @date 2022年10月5日 13点22分
 */
public interface ChannelPoolInterfaces {

    /**
     * 添加新连接
     * 方便发送心跳包
     * @param channel
     */
    void put(Channel channel);

    /**
     * 删掉新连接
     * 心跳包失效删除
     * @param channel
     */
    void del(Channel channel);

    /**
     * 获取连接
     * @param key 连接的唯一标识
     * @return
     */
    Channel get(String key);

    /**
     * 获取连接的属性
     * @param channel 连接
     * @param attr_key 属性的唯一标识
     * @return
     */
    String getAttr(Channel channel, String attr_key);

    /**
     * 添加长连接
     * @param key 连接的唯一标识
     * @param channel 连接
     */
    void addLongConnect(String key, Channel channel);

    /**
     * 删除长连接
     * @param key 连接的唯一标识
     */
    void delLongConnect(String key);

    /**
     * 连接错误处理接口
     * @param channel
     * @param cause
     */
    void exceptionCaught(Channel channel, Throwable cause);

}
